// 该文件用于创建Vuex中最核心的store
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
// 准备 actions --- 用于响应组件中的动作
const actions = {
    // actions 能拿到 context，可以直接操作数据。但不要这么做
    // 为什么不在 actions 这一步就操作数据？因为vue development tool 只监视mutations，也就是在actions直接操作，我们就调试不了了
    jia: function (context, value) {
        context.commit('JIA', value)
    },
    jian: function (context, value) {
        context.commit('JIAN', value)
    },
    jiaOdd: function (context, value) {
        if (context.state.sum % 2) {
            context.commit('JIA', value)
        }
    },
    jiaWait: function (context, value) {
        setTimeout(() => {
            // context.commit('JIA', value)
        }, 500);
        console.log("jiaWait：我一个人做不完。。。剩下的让demo1完成");
        context.dispatch('demo1', value)
    },
    demo1: function (context, value) {
        console.log("demo1：我也做不完，剩下的交给demo2");
        context.dispatch('demo2', value)
    },
    demo2: function (context, value) {
        console.log("demo2：全都处理完了，由我commit给mutations");
        context.commit('JIA', value)
    }
}
// 准备 mutations --- 用于操作数据（状态）
const mutations = {
    JIA: function (state, value) {
        state.sum += value
    },
    JIAN: function (state, value) {
        state.sum -= value
    }
}
// 准备 state --- 用于存储数据(状态)
const state = {
    sum: 1,
}

// 创建 store
export default new Vuex.Store({
    actions: actions,
    mutations: mutations,
    state: state,
})